class MockMCP:
    def __init__(self):
        self.tools = {}

    def tool(self, name=None, description=None):
        """模拟MCP的tool装饰器"""
        def decorator(func):
            # 获取工具名称（使用函数名或自定义名称）
            tool_name = name or func.__name__

            # 获取工具描述（使用文档字符串或自定义描述）
            tool_description = description or func.__doc__ or "No description"

            # 注册工具
            self.tools[tool_name] = {
                'function': func,
                'description': tool_description,
                'name': tool_name
            }

            print(f"🔧 注册工具: {tool_name} - {tool_description}")
            return func

        return decorator

    def list_tools(self):
        """列出所有注册的工具"""
        return list(self.tools.keys())

# 使用示例
mock_mcp = MockMCP()

@mock_mcp.tool()
def generate_rag_output(query: str) -> str:
    """生成RAG输出"""
    return f"RAG结果: {query}"

@mock_mcp.tool(name="web_search", description="执行网络搜索")
def run_web_search(query: str) -> str:
    return f"搜索结果: {query}"

print("注册的工具:", mock_mcp.list_tools())